Dans l'accélération GPU, nous devons abandonner le raisonnement "calcul d'abord". Les performances modernes sont dictées par Gestion de la mémoire: l'orchestration de l'allocation, de la synchronisation et de l'optimisation des données entre l'hôte (CPU) et le périphérique (GPU).
1. Le déséquilibre entre mémoire et calcul
Alors que le débit arithmétique des GPU ($TFLOPS$) a explosé, la bande passante mémoire ($GB/s$) a augmenté à un rythme bien plus lent. Cela crée un écart où les unités d'exécution sont souvent « privées », en attente de données provenant de la VRAM. En conséquence, la programmation GPU est souvent une programmation mémoire.
2. Le modèle Roofline
Ce modèle illustre la relation entre Intensité arithmétique (FLOPs/Octet) et les performances. Les applications se divisent généralement en deux catégories :
- Limité par la bande passante : Limité par la bande passante (la pente raide).
- Limité par le calcul maximal (TFLOPS) : Limité par le pic de TFLOPS (le plafond horizontal).
3. La taxe du déplacement des données
Le principal goulot d'étranglement des performances provient rarement des calculs ; il s'agit du délai et de la consommation énergétique liés au déplacement d'un octet via le bus PCIe ou depuis la HBM. Un code haute performance privilégie la localisation des données et minimise les transferts entre l'hôte et le périphérique.